<?php
    require_once PATH_CLASS."widget.class.php";
    require_once PATH_CLASS."security.class.php";
    require_once PATH_LIB."database.php";

    $db       = getDb();
    $response = new AjaxResponse();
    $smarty   = commun::getSmarty();

    function needResponsable(AjaxResponse &$response,$andDie=true){
      $response
      ->addError("Il faut être responsable pour faire des choses de responsable...")
      ->setStatus(false);
      if($andDie){
        die($response->sendAsJson());
      }
    }
    $id = 0;
    function canUpdateMembre(&$id,&$response,$andDie=true){
      $ret=true;
      $id = null;
      
      if($id==null && isset($_REQUEST['membre_id'])){
        $id = $_REQUEST['membre_id'];
      }
      
      if($id==null && isset($_REQUEST['membre_name'])){
        $id = $_REQUEST['membre_name'];
      }
      
      if($id!=null){
        if(!security::canUpdateMembre($id)) {
          $ret=false;
          if($andDie){
            needResponsable($response);
          }
        }
      } else {
        $ret=false;
        if($andDie){
          needResponsable($response);
        }
      } 
      return $ret;
    }
    
    function getFicheMembre(&$membre){
      $membre_id=0;
      if(isset($_POST['membre_id'])){
        $membre_id=$_POST['membre_id'];
      } else if(isset($_POST['membre']) && isset($_POST['membre']['membre_id'])){
        $membre_id=$_POST['membre']['membre_id'];
      }

      $membre=null;
      if($membre_id!=0){
        $membre = membre::getMembreById($membre_id);
      }

      if($membre==null){
        needResponsable($response);
      }
    }
    
    
    switch($_REQUEST['action']){
      case 'get'  :
        
        canUpdateMember($id,$response);

        $sub = $_REQUEST['sub'];

        switch($sub){
          case 'saisons':
            $sub.='_list';
            break;
          case 'coachs':
            $sub.='_list';
            break;
        }

        $pars = array('membre_id'=>$id);
        $response->setMore(getCapture("membre_$sub",'__admin__/partial/membre/admin',$pars));
        $response->sendAsJson();
        break;
      case 'update' :

        /*
         * En cas d'update il faut être responsable
         */

        canUpdateMembre($id,$response);

        $sub = $_REQUEST['sub'];
        switch($sub){
        case 'asso':
          function assoCallback($item,$idx,$saison_id){
            $tab  = explode('-',$item);
            $array = array(
               'fonction_id'=>$tab[0]  
              ,'fonction_type_id'=>$tab[1]  
              ,'saison_id'=>$saison_id  
              ,'membre_id'=>$_POST['membre_id']  
            );
            return $array;
          }
          $sql='';
          commun::gestionSousFiches($sql,'t_liens_mfs','mfs_lien_id','assoCallback');
        break;
        case 'coach':
          function coachCallback($item,$idx,$saison_id){
            $array = array(
               'equipe_id'=>$item  
              ,'saison_id'=>$saison_id  
              ,'membre_id'=>$_POST['membre_id']  
            );
            return $array;
          }
          
          $sql='';
          commun::gestionSousFiches($sql,'t_liens_ec','ec_lien_id','coachCallback');
        break;
        case 'equipe':
            function equipeCallback($item,$idx,$saison_id){
              $array = array(
                 'equipe_id'=>$item  
                ,'saison_id'=>$saison_id  
                ,'membre_id'=>$_POST['membre_id']  
              );
              return $array;
            }
            
            function equipeDeleteCallback($item,$idx){
              $ret='';
              if(isset($item['responsable']) && $item['responsable']=='on'){
                if(isset($item['equipe']) && $item['equipe']!=0){
                  $equipe = $item['equipe'];
                  $ret=sprintf('UPDATE t_liens_mes SET responsable = 1 where mes_lien_id=%d',$idx);
                }
              }
              return $ret;
            }            
            
            $sql[]=sprintf('Update t_liens_mes set responsable=0 where `membre_id`=%d',$_POST['membre_id']);
            commun::gestionSousFiches($sql,'t_liens_mes','mes_lien_id','equipeCallback','equipeDeleteCallback');
          break;
        case 'info':
          $membre = membre::getMembreById($id);
          $fileName = $membre->membre_photo;
          if(image::analyseUploadedImage('membre_photo','membre',$response)){
            if(image::replaceUploadedImage('membre','membre_photo',$id,$fileName,true)==true){
              $_POST['membre']['membre_photo'] = $fileName;
              $membre->membre_photo=''; // Pour provoquer la mise à jour au moins sur ce champ
            }
          }
          
          if(is_numeric($_POST['membre']['membre_prof_homme']) && $_POST['membre']['membre_prof_homme']==0){
            $_POST['membre']['membre_prof_homme'] = $_POST['ac-membre']['membre_prof_homme'];
          }

          if(is_numeric($_POST['membre']['membre_prof_femme']) && $_POST['membre']['membre_prof_femme']==0){
            $_POST['membre']['membre_prof_femme'] = $_POST['ac-membre']['membre_prof_femme'];
          }
          
          if(is_numeric($_POST['membre']['membre_prof_equipe']) && $_POST['membre']['membre_prof_equipe']==0){
            $_POST['membre']['membre_prof_equipe'] = $_POST['ac-membre']['membre_prof_equipe'];
          }
          
          $_POST['membre']['membre_password']   = trim($_POST['membre']['membre_password']);
          $_POST['membre']['membre_password2']  = trim($_POST['membre']['membre_password2']);
          
          $send_mail = false;

          if(!empty($_POST['membre']['membre_password']) && $_POST['membre']['membre_password']!=''){
            
              if($_POST['membre']['membre_password']!=$_POST['membre']['membre_password2']){
                 $response->addError("Les deux mots de passe ne correspondent pas");
              } else {
              //On valide la fiche du membre on doit envoyer un mail
                  $_POST['membre']['membre_md5']=commun::getHash($_POST['membre']['membre_password']);
                  $send_mail=true;
              }
          }

          $_POST['membre']['membre_modh'] = time();
          $_POST['membre']=database::addslashes_sql($_POST['membre']);

          unset($_POST['membre']['membre_id']);
          
          commun::convertHTML($_POST['membre']);

          $sql=$db->UpdateSQL('t_membres',$_POST['membre'],'membre_id='.$id);
          try{
            if($db->Update($sql)>0){
              if($db->Count==1){
                $response->addSuccess("Mise à jour effectuée");
                if($send_mail==true && isset($_POST['membre']['membre_email'])){
                  $membre->sendCredentials($_POST['membre']['membre_password']);
//                    try{
//                      envoyerMail($_POST['membre']['membre_email'],$_POST['membre']);
//                    } catch (Exception $e){
//                      
//                    }
                }
              } else {
                $response->addSuccess("Rien a mettre à jour, rien mis à jour");
              }
            }
          } catch(Exception $e){
            $response->addError($e);
          }
          break;
        case 'nouveaux':
          $sub .= '_list';

            foreach($_POST['item']['add']['membre_nom'] as $key=>$nom){
                $item=$_POST['item']['add'];

                $prenom = $item['membre_prenom'][$key];
                $mail = $item['membre_mail'][$key];
                $pwd = $item['membre_password'][$key];

                $login = trim(ucfirst($nom).'_'.ucfirst($prenom));

                if(empty($pwd)){
                  $pwd = getNewPwd();
                }

                $sql='INSERT INTO t_membres (membre_nom,membre_prenom,membre_email,membre_md5,membre_login,membre_crdh,membre_cr)';
                $sql.=' values("'.$nom.'","'.$prenom.'","'.$mail.'"';
                $sql.=',"'.getPwdMd5($pwd).'","'.$login.'",UNIX_TIMESTAMP(),'.$_SESSION['user_id'].');';

                $db->Insert($sql);

                $m_id = $db->lastId;

                if($m_id){
                    $response->addSuccess("Création de $login ($m_id) effectuée avec succés");
                    $saison_id=$saison_courante['saison_id'];

                    if(isActiveForSeason($id)){
                      $sql='INSERT INTO t_liens_mes (saison_id,membre_id,membre_id) ';
                      $sql.='VALUES("'.$saison_id.'","'.$id.'","'.$m_id.'");';

                      $db->Insert($sql);
                    }

                    if(!empty($mail)){
                        $user= getMembre($m_id);
                        $user['membre_pwd']=$pwd;
                        envoyerMail($mail,$user);
                    }
                } else {
                  $response->addError("Impossible de créer l'utilisateur $login, ajoutez un caractère ou inversez le nom et le prénom");
                }
            }

            break;

          break;
        default :
          $response->addError('Sub inconnu');
        }
//        $pars = array('equipe_id'=>$id);
//        $response->setMore(getCapture("equipe_$sub",'__admin__/partial/equipe/admin',$pars));
//        $response->sendAsJson('text');
        
        $membre='';
        getFicheMembre($membre);
        
        $membre->membre_prof_histoire = preg_replace("/\n/","¤", $membre->membre_prof_histoire);
        
        
        $pars = array('membre_id'=>$id , 'membre'=>$membre);
        
        if($response->getStatus()==null){
          $response->addSuccess('Mise à jour effectuée avec succes');
        }
        
        $response->setMore(getCapture("membre_$sub",'widgets/player_admin',$pars));
        $response->sendAsJson();
      break;
    case 'show':
        if((!isset($_REQUEST['show_admin']) || $_REQUEST['show_admin']!='true') || !canUpdateMembre($id, $response, false)){
          $ret = widget::render('player',array('name'=>$_REQUEST['membre_name'],'more'=>$_REQUEST));
        } else {
          $ret = widget::render('player_admin',array('name'=>$_REQUEST['membre_name'],'more'=>$_REQUEST));
        }
        echo $ret;
        break;
    }

?>
